package cn.com.colasoft.thread.concurrentcontainer;

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.SynchronousQueue;

/**
 * 同步队列是一种特殊的transferqueue
 */
public class SynchronusQueueTest { //容量为0
	public static void main(String[] args) throws InterruptedException {
		BlockingQueue<String> strs = new SynchronousQueue<>();
		
		new Thread(()->{
			try {
				System.out.println(strs.take());
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}).start();
		
		strs.put("aaa"); //阻塞等待消费者消费
		/**
		 * 调用add就报错.这说明什么呢?这与transfor的区别在于它的容器的容量为0,必须要有消费者
		 * 消费消息,如果不消费就阻塞.如果调用非阻塞的方法就报错
		 */
		//strs.add("aaa");
		System.out.println(strs.size());
	}
}
